export {}
// function id<type>(value: type): type {
//   // 错误示范：
//   console.log(value.length)
//   return value
// }
// 第一种解决方案：改成一个更加具体的类型:
function id1<type>(value: type[]) {
  console.log(value.length)
  //   return value
}
// 需求：能够访问到value的length属性
// 所以我们为type类型变量 添加了一个约束
// 只要让这个约束上面有Length属性就可以

// 第二种解决方案：指定约束:
interface Ilength {
  length: number
}
// type extends Ilength表示：约束type必须要有length属性
function id2<type extends Ilength>(value: type) {
  console.log(value.length)
}
id2([2, 3])
id2('sdsd')
id2({ length: 8, name: 'sdsd' })
